window.onload = function(){
	//变量分为全局变量和局部变量         函数内部可以直接读取全局变量，但是函数外部无法获取函数内部的局部变量
	//函数内部生命变量一定要用var 如果不用的话，这也是一个全局变量
	// 能够读取其他函数内部变量的函数，这些变量失踪保存在内存中
	function f1(){
	　　　var n=999;
	　　　nAdd=function(){n+=1}
	　　　function f2(){
	　　　　　console.log(n);
	　　　}
	　　　return f2;
	}
　　  var result=f1();
　　 result(); // 999
　　 nAdd();//因为方法前面写var 所以是全局声明
　　 result(); // 1000

	//闭包嵌套
	function fun(n,o) {
	    console.log(o)
	    return {
	    	fun:function(m){
	      		return fun(m,n);
	    	}
	  	};
	}
	var a = fun(0);  a.fun(1);  a.fun(2);  a.fun(3);//undefined,0,0,0
	var b = fun(0).fun(1).fun(2).fun(3);//undefined,0,1,2
	var c = fun(0).fun(1);  c.fun(2);  c.fun(3);//undefined,0,1,1
	
	
	var say = function(){
         var i = 1;
         var sayName = function(){
            i++;
             alert(i);
          }
         return sayName;
      }
      var result1 = say();
     result1(); //1
     result1(); //2
     
     for (var i = 1; i <= 5; i++) {
	    setTimeout( function timer() {
	         console.log(i);
	    }, 1000 );
	}
	//输入 5个6
	for (var i = 1; i <= 5; i++) {
	    (function(i){
	        setTimeout( function timer() {
	              console.log(i);
	          },  1000 );
	    })(i);
	}
	for (let i = 1; i <= 5; i++) {
	  setTimeout( function timer() {
	      console.log(i);
	  }, 1000 );
	}// 1,2,3,4,5
	
	//好多个p标签点击每一个点击显示自己的个数
	var arr = document.getElementsByTagName("p");
	for(var i = 0;i<arr.length;i++){
	    (function (arg) {
	        arr[i].onclick = function () {  //onclick函数实例的 function scope 的 closure 对象属性有一个引用 arg,
	            alert(arg);                 //只要 外部空间的 arg 不变,这里的引用值当然不会改变
	        }
	    })(i);                              //立刻执行该匿名函数,传递下标 i(实参)
	}
	
	for(var i = 0;i<arr.length;i++){
	    arr[i].i = i;
	    arr[i].onclick = function () {
	        alert(this.i);
	    }
	}
	
	for(var i = 0; i<arr.length;i++){
	    arr[i].onclick = (function(arg){
	        return function () {
	            alert(arg);
	        }
	    })(i);
	}
	for(var i = 0;i<arr.length;i++){
    	arr[i].onclick = (function () {
	        var temp = i;
	        return function () {
	            alert(temp);
	        }
	    })();
	}
}
